DataSet, DataTable, DataColumn : 네이버 블로그

您所在的位置:网站首页 简述dataset datatable datacolumn DataSet, DataTable, DataColumn : 네이버 블로그

DataSet, DataTable, DataColumn : 네이버 블로그

2023-07-12 09:28| 来源: 网络整理| 查看: 265

DB상의 실제 테이블의 스키마가

DataSet에 DataTable에 그대로 옮겨온 상태이기 때문에

정수형으로 정해진 컬럼에 문자열을 대입할 수는 없을듯 합니다.

 

웹폼에서 GridView같은 경우는 이벤트하나로 해결했었는데..

윈폼에 있는 DataGridView컨트롤은 좀 다르네요..

 

우선 일감에 떠오른 방법은 모든 스키마가 동일하고

원하는 컬럼의 type만 원하는 type으로 변경된 임시테이블을 만들고

DB에서 업어온 DataSet의 테이블의 값들을 차례로 옮기다가

원하는 컬럼을 복사할때 조건을 검사해서

일치하는 값으로 대입해주는 방법이었는데요..

좀 무식해보이긴 하네요;

메모리부담도 좀 커질듯 하고..

 

// DB에서 가져왔다고 가정하고 만든 DataTable입니다.

            DataTable table = new DataTable("temp");

            DataColumn col1 = new DataColumn("item", typeof(string));// string타입의 'item'컬럼

            DataColumn col2 = new DataColumn("qty", typeof(int));// int타입의 'qty'컬럼

            table.Columns.AddRange(new DataColumn[] { col1, col2 });

 

            DataRow row1 = table.NewRow();

            row1["item"] = "모자";

            row1["qty"] = 8;

            DataRow row2 = table.NewRow();

            row2["item"] = "바지";

            row2["qty"] = 9;

            DataRow row3 = table.NewRow();

            row3["item"] = "코트";

            row3["qty"] = 4;

            DataRow row4 = table.NewRow();

            row4["item"] = "양말";

            row4["qty"] = 10;

 

            table.Rows.Add(row1);

            table.Rows.Add(row2);

            table.Rows.Add(row3);

            table.Rows.Add(row4); // 여기까지 DB테이블 완성

 

            // DB의 Table과 동일한 스키마로 채울 임시테이블

            DataTable tempTable = new DataTable();

            foreach (DataColumn col in table.Columns)

            {// 원본테이블의 Column의 컬렉션으로 반복문을 돌면서

                // 동일 스키마 생성

                DataColumn newCol = new DataColumn(col.ColumnName, col.DataType);

                tempTable.Columns.Add(newCol);

            }

 

            tempTable.Columns["qty"].DataType = typeof(string);// 원하는 컬럼의 타입만 변경해줌

 

            foreach (DataRow row in table.Rows)

            { // 원본 테이블의 Row컬렉션으로 반복문 돌면서

                DataRow newRow = tempTable.NewRow();

 

                newRow["item"] = row["item"];// 다른 값들은 그대로 대입

 

                switch (Convert.ToInt32(row["qty"])) // 원하는 컬럼의 경우

                {// 경우에 따라 원하는값 대입

                    case 1: newRow["qty"] = "aaa"; break;

                    case 2: newRow["qty"] = "bbb"; break;

                    case 3: newRow["qty"] = "ccc"; break;

                    case 4: newRow["qty"] = "ddd"; break;

                    case 5: newRow["qty"] = "eee"; break;

                    case 6: newRow["qty"] = "fff"; break;

                    case 7: newRow["qty"] = "ggg"; break;

                    case 8: newRow["qty"] = "hhh"; break;

                    case 9: newRow["qty"] = "iii"; break;

                    default: newRow["qty"] = "jjj"; break;

                }

 

                tempTable.Rows.Add(newRow);

            }

 

            // 데이터를 묶어줄 DataGridView컨트롤

            DataGridView viewer = new DataGridView() { Parent = this.zoneContent, Size = new Size(300, this.zoneContent.Height) };

            //viewer.DataSource = table; // 원본Table로 바인딩하지 말고

            viewer.DataSource = tempTable;// 원하는 스키마로 가공한 임시테이블로 바인딩

 

--------------------------------------------------------------------------------------

           foreach (DataTable table in DS.Tables["a테이블명"])            {                foreach (DataRow row in table.Rows)                {                    foreach (DataColumn column in table.Columns)                    {                       String equal_checker = Console.WriteLine(row[column]);                    }                }            }

 ///////////////////////////////////////////////////////////////////////////////////////////////////

진행단계 삭제된 거 넣어주기                    if (HoiwonGubun == "11")                    {                        if (dtExChange != null && dtExChange.Rows.Count > 0)                        {                            string strTemp = dtResult.Rows[0]["EXCHANGE_CODE"].ToString();                            if (strTemp != "")                            {                                DataRow[] dr = dtExChange.Select("CODE_NO = '" + strTemp + "'");

                                if (dr.Length == 0)                                {                                    DataRow newRow = dtExChange.NewRow();                                    int i = 0;                                    string[] strDataRow = { strTemp, strTemp, "99999" };

                                    foreach (DataColumn cln in dtExChange.Columns)                                    {                                        newRow[cln.ColumnName] = strDataRow[i++];                                    }

                                    dtExChange.Rows.InsertAt(newRow, dtExChange.Rows.Count);                                }                            }                        }                    }

 

=======================================================================================================

...        protected DataTable dtMainData;         protected TimeSpan tsDiff;         private DataSet dsMainData;         private DataSet dsMainData1;         private DataTable dsMainData1t;          if (XmlSearchData["txtId"].InnerText != "")             {                 DateTime SDate = DateTime.Parse(XmlSearchData["ddlSYear"].InnerText + "-" + XmlSearchData["ddlSMonth"].InnerText + "-" + XmlSearchData["txtSDay"].InnerText);                 DateTime EDate = DateTime.Parse(XmlSearchData["ddlEYear"].InnerText + "-" + XmlSearchData["ddlEMonth"].InnerText + "-" + XmlSearchData["txtEDay"].InnerText);                 TimeSpan Date = EDate - SDate;                 int DateCnt = Date.Days + 1;                 DateTime NowDate = DateTime.Today;                 int iReportDayWeek1 = Convert.ToInt16(NowDate.DayOfWeek); //현재 요일                 int iReportDayWeek2 = Convert.ToInt16(DayOfWeek.Saturday); //토요일                 int iReportDayWeek3 = Convert.ToInt16(DayOfWeek.Sunday); //일요일                 DateTime SatDate = NowDate.AddDays(iReportDayWeek2 - iReportDayWeek1);                 DateTime SunDate = NowDate.AddDays(iReportDayWeek3 - iReportDayWeek1);                 int cnt = dsMainData.Tables[0].Rows.Count;dsMainData1t = tt();                 dsMainData1 = new DataSet(); for (int j = 0; j 


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3